//封装axios
import axios from 'axios'
import router from '../router/index'

let instance = axios.create({
    timeout:10000,//请求时间超过10000ms就中断
    //baseURL:'/api',
})
//设置post请求头
// instance.defaults.headers.post['Content-type'] = 'application'//判断是否需要json格式
//请求拦截，每次发起请求之前获取token
//如果有token，将token保存在请求的header上，给后台验证
instance.interceptors.request.use(req=>{
    //获取token的方式，一从vuex，二从本地
    let token = sessionStorage.getItem('token')
    token && (req.headers['Authorization']=`Bearer ${token}`)
    return req
},error => Promise.reject(error))
//请求后
instance.interceptors.response.use(response=>{
    //封装时与Java沟通，获取token的方式，保存在本地或者vuex中
    response.data.token &&sessionStorage.setItem('token',response.data.token)
    return response
},error => {
    let _response = error.response
    switch (_response.status) {
        case 401:
            sessionStorage.removeItem('token');
            this.$message({type: 'error', message: '身份过期，请重新登录'});
            return router.push('/Login');
        case 404:
            alert('服务器未找到相关资源')
            //this.$message({type: 'error', message: '服务器未找到相关资源'}) ;
            return ;
        case 500:
            alert('服务器异常')
            //this.$message({type: 'error', message: '服务器异常'});
            return ;
    }
    return Promise.reject(error.response.data)
})
export default instance